﻿using ModelLayer;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace WcfService
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
    [ServiceContract]
    public interface IRealLifeService
    {
        [OperationContract]
        int ValidateLoginInformation(string email, string password);

        [OperationContract]
        User GetUser(string email, string password);

        [OperationContract]
        int CreateUser(User user);

        [OperationContract]
        int CreateAchievement(User user, Achievement achievement);

        [OperationContract]
        List<User> GetFriendships(User user);

        [OperationContract]
        List<Friend> GetPendingFriendships(User user);

        [OperationContract]
        List<UserAchievement> GetUserAchievements(User myUser);

        [OperationContract]
        int SetUserAchievementStatus(UserAchievement userAchievement);

        [OperationContract]
        int RequestFriendship(User requester, User requested);

        [OperationContract]
        List<User> SearchUserList(string[] keywords);

        [OperationContract]
        int SetFriendshipStatus(User requester, User accepter, Friend.Status status);

        [OperationContract]
        int SetAchievementStatus(Achievement achievement);

        [OperationContract]
        User GetUserById(int id);

        [OperationContract]
        UserAchievement GetUserAchievement(int userId, int achId);

        [OperationContract]
        int DeleteUsers(int[] userIDs);
    }
}